﻿//522. 最长特殊序列 II
//给定字符串列表 strs ，返回其中 最长的特殊序列 的长度。如果最长特殊序列不存在，返回 - 1 。
//特殊序列 定义如下：该序列为某字符串 独有的子序列（即不能是其他字符串的子序列）。
//s 的 子序列可以通过删去字符串 s 中的某些字符实现。
//例如，"abc" 是 "aebdc" 的子序列，因为您可以删除"aebdc"中的下划线字符来得到 "abc" 。
//"aebdc"的子序列还包括"aebdc"、 "aeb" 和 "" (空字符串)。

class Solution {
public:
    bool isSubsequence(string s, string t)
    {
        int  i = 0, j = 0;
        for (int i = 0; i < s.size(); i++)
        {
            while (j < t.size() && t[j] != s[i])
            {
                j++;
            }
            if (j >= t.size())
            {
                return false;
            }
            j++;
        }

        return true;
    }
    int findLUSlength(vector<string>& strs)
    {
        int ans = -1;
        for (int i = 0; i < strs.size(); i++)
        {
            for (int j = 0; j < strs.size(); j++)
            {
                if (j != i && isSubsequence(strs[i], strs[j]))
                    goto next;
            }
            ans = max(ans, (int)strs[i].size());
        next:;
        }
        return ans;
    }
};